/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Service;

import DB.FichaMedicoGeneral;
import DB.HibernateUtil;
import com.google.gson.Gson;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;

import javax.jws.WebService;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Rodrigo
 */
@WebService()
public class FichaMedicoGeneralWS {

    /**
     * Web service operation agrega una nueva orden de derivacion
     * del profesional Nilo Farfan
     */
    @WebMethod(operationName = "agregarFichaFarfan")
    public boolean agregarFichaFarfan(@WebParam(name = "fichaFarfan") FichaMedicoGeneral fichaFarfan) {
        //TODO write your implementation code here:
        return ControladorDeObjetos.saveObject(fichaFarfan);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "editarFichaFarfan")
    public boolean editarFichaFarfan(@WebParam(name = "fichaFarfan") FichaMedicoGeneral fichaFarfan) {
        //TODO write your implementation code here:
        return ControladorDeObjetos.updateObject(fichaFarfan);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "obtenerFichaFarfan")
    public Object obtenerFichaFarfan(@WebParam(name = "idFicha") Long idFicha) {
        //TODO write your implementation code here:
        return ControladorDeObjetos.loadObjectByLongId(idFicha, FichaMedicoGeneral.class);
    }

    /**
     * Web service operation lista las ordenes de derivaciones
     */
    @WebMethod(operationName = "listarFichasFarfan")
    public List<FichaMedicoGeneral> listarFichasFarfan() {
        //TODO write your implementation code here:
        return ControladorDeObjetos.getAllObjectByClassType(FichaMedicoGeneral.class);
    }

    /**
     * Web service operation que filtra por rut de profesional,pacinte, numero orden, especialdiad, diagnostico, fecha emision
     */
    @WebMethod(operationName = "buscarFichaFar")
    public String buscarFichaFar(@WebParam(name = "buscar") String buscar, @WebParam(name = "profesional") String profesional) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(FichaMedicoGeneral.class).add(Restrictions.or(Restrictions.or(Restrictions.like("rutPaciente", "%" + buscar + "%"), Restrictions.like("diagnostico", "%" + buscar + "%")),
                Restrictions.like("fechaIngreso", "%" + buscar + "%")));
        List l = c.list();
        Gson gson = new Gson();
        String json = gson.toJson(l);
        s.close();
        return json;
    }
}